
/*
 *  Thesis.h
 *  Thesis
 *
 *  Created by Hamza SHAWY on 20/10/07.
 *  Copyright 2007 __MyCompanyName__. All rights reserved.
 *
 */

 
#ifndef THESIS_H
#define THESIS_H

#include <iostream>
#include <string>
#include <list>


using std::list;
using std::string;

#include "Report.h"
class Thesis  : public Report  
{
       public: // the BEHAVIOR of objects insatnce of the class Thesis : the MEMBRE FUNCTIONS (METHODS) need to be accessed outside the class 

                Thesis (); // the default constructor of the class Thesis initializes data members to default values. 
				Thesis ( int, int, int, string, string, string, string, string, string); // the regular constructor of the class Thesis  
                ~Thesis (); // the destructor can not be overloaded because there is only one for the class Thesis
                
			    string getSupervisor() const; // returns the supervisor of the thesis 
				string getDegree() const;
				int getNumberOfPages() const; //returns the number of pages
				void print(); /* prints a string representation of objects of Thesis.
				               This member function overrides the one defined in the class Report. */ 
				
				// the following methods are not asked but needed for the test of the previous methods and for the rest of the project
				void setSupervisor(string) ; // prototype of the setSupervisor function . Sets the thesis's supervisor
				void setNumberOfPages(int); //sets the number of pages
				void setDegree(string);
				
        protected: // deals with the ATTRIBUTES of the object instance of the class Thesis : the DATA MEMBERS can cot be accessed outside the class (the data are ecapsulated or hidden)
				string Supervisor ; //  which is unique for each (object instance of the class Thesis)
				string Degree;
				int NumberOfPages;

				
 }; // end class Thesis

#endif    
